# -*- coding: utf-8 -*-
# 作者： 安智军
# @Time：2022/6/20 22:31
# @Email：1010666711@qq.com
# @File： 自省.py

# 自省：反省：汉语解释  自我反省
'''
python 自省：python运行的时候知道对象自身有哪些东西

dir()函数
它是用于自省的最重要的函数之一。它以列表的形式返回一个对象所拥有的全部属性和方法，如果dir()不传任何参数，默认是查找当前命名空间有什么对象。
'''


class Person(object):
    name = '人'


print(dir(Person))  # dir是自省的一种，作用是查看自己有哪些属性
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']

print(hasattr(Person,'name')) # hasattr 是自省的一种，作用查看对象有没有某个属性
# True


# 自省的举例 使用场景的举例
'''
一个函数的功能检查参数有没有想要的属性  传过来的属性
检查函数的参数 检查函数是不是整数 检查函数的类型 例如类型检查  isinstance
'''

def check_param(i):
    '''

    :return:
    '''

    if not isinstance(i,int):
        return type(i)
    else:
        return '是整数'


print(check_param(31))


''''
自省函数常用的有哪些

dir（）# python查看对象有哪些属性
hasattr（）# python查看对象是有有每一个属性
type（）# 查看对象是什么类型
isinstance（）# 查看对象是不是某一个类型 isinstance（1,int）
id（）# 查看对象的id是什么
callable（） # python判断对象是不是可调用（即是不是可以加括号调用）
help（）# python查看某个对象的帮助信息
getattr（） # 获取某个对象的属性
setattr（）# 设置某个队形的属性



'''



